<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * CodeIgniter Model Class 扩展model类，加入缓存方法
 *
 * @package         CodeIgniter
 * @subpackage	     Libraries
 * @category	     Libraries
 * @author		     ExpressionEngine Dev Team
 * @link            http://codeigniter.com/user_guide/libraries/config.html
 */
class SDF_Model extends CI_Model{
    /*public function __construct(){
        $this->load->database();
        parent::__construct();
    }*/
    /**
     * 公用快接缓存器
     * @param $name
     * @param string $value
     * @param null $options
     * @return mixed
     */
    public function S($name,$value='',$options=null){
        $this->load->driver('cache', array('adapter' => 'redis', 'backup' => 'file'));
        $expire   =   is_numeric($options)?$options:config_item('cache_time');
        if($this->cache->redis->is_supported()){
            if(''=== $value){ // 获取缓存
                return $this->cache->redis->get($name);
            }elseif(is_null($value)) { // 删除缓存
                return $this->cache->redis->delete($name);
            }else { // 缓存数据
                return $this->cache->redis->save($name, $value, $expire);
            }
        }
        if(''=== $value){ // 获取缓存
           return $this->cache->get($name);
        }elseif(is_null($value)) { // 删除缓存
            //return $this->cache->delete($name);
        }else { // 缓存数据
            return $this->cache->save($name, $value, $expire);
        }
    }

    /**
     * 公用获取数据列表
     * @return mixed
     */
    public function _list(){
        $query = $this->db->get();
        return $query->result_array();
    }

    /**
     * 公用获取表字段列表
     * @return mixed
     */
    public function _list_fields(){
        $fields = $this->db->list_fields($this->_table);
        return $fields;
    }

    /**
     * 公用获取字段详细信息
     * @return mixed
     */
    public function _field_data()
    {
        return $this->db->field_data($this->_table);
    }

    /**
     * 公用插入函数 成功返回id，失败返回false
     * @param $data
     * @return bool
     */
    public function _insert($data){
        if($this->db->insert($this->_table, $data)){
            return $this->db->insert_id();
        }
        return false;
    }

    /**
     * 公用操作表选择 对数据查询或操作前必须先指定操作的表
     * @param $table
     * @return $this
     */
    public function _from($table){
        $this->db->from($table.' AS '.$table);
        $this->_table = $table;
        return $this;
    }

    /**
     * 公用数据删除方法 返回删除数据的数量
     * @param $where
     * @return mixed
     */
    public function _delete($where=array()){
        if(!empty($where)){
            $this->db->where($where);
        }
        if($this->db->delete($this->_table)){
            return $this->db->affected_rows();
        }else{
            return false;
        }
    }


    /**
     * 公用数据表数据清空方法
     * @param $table
     * @return mixed
     */
    public function _empty_table($table){
    	$this->db->empty_table($table);
        return $this->db->affected_rows();
    }
        
    
    /**
     * 公用获取一条数据
     * @param $where
     * @return mixed
     */
    public function _row($where){
        $query = $this->db->get_where(null,$where,1);
        $row = $query->row_array();
        return $row;
    }

    /**
     * 公用数据更新函数
     * @param $where
     * @param $data
     * @return mixed
     */
    public function _update($where,$data){
        $this->db->where($where);
        if($this->db->update($this->_table,$data)){
        	return $this->db->affected_rows();
        }else{
            return false;
        }
    }

    /**
     * 公用指定执行的数据库操作
     * @param $map
     * @return $this
     */
    public function _map($map){
        if(is_array($map)){
            foreach($map as $key=>$data){
                $this->db->{$key}($data);
            }
        }
        return $this;
    }

    /**
     * 公用限定数据返回调试
     * @param $limit
     * @param $offset
     * @return $this
     */
    public function _limit($limit, $offset){
        $this->db->limit($limit,$offset);
        return $this;
    }

    /**
     * 公用获取结果集数量
     * @return mixed
     */
    public function _count(){
        $numrows = $this->db->count_all_results();
        //echo $this->db->last_query();
        return $numrows;
    }

    /**
     * 公用排序
     * @param $orderField
     * @param $orderDirection
     * @return $this
     */
    public function _order_by($orderField,$orderDirection){
        $this->db->order_by($orderField,$orderDirection);
        return $this;
    }

    /**
     * 公用获取主键
     * @return mixed
     */
    public function _get_pk(){
        $list_fields =$this->_list_fields($this->_table);
        return $list_fields[0];
    }

    /**
     * 允许你在SQL查询中写 SELECT 部分
     * @param $field
     * @param bool $src
     * @return $this
     */
    public function _select($field,$src=TRUE){
        $this->db->select($field,$src);
        return $this;
    }
    /*function update_entry()
    {
        $this->title = $_POST['title'];
        $this->content = $_POST['content'];
        $this->date = time();
        $this->db->update('entries', $this, array('id' => $_POST['id']));
    }*/
}
// END Model Class

/* End of file Model.php */
/* Location: ./system/core/Model.php */